#ifndef _keyboard_h_
#define _keyboard_h_

/*
 *  Aca vienen los includes
 */

/*
 *  Enum para la opcion del teclaod en
 *  ingles ( cuando es 0 ) o en
 *  catellano, cuando es 1
 */

enum kbLayoutT{ ENGLISH_KB = 0, SPANISH_KB };

/*
 *  A los caracteres especiales les doy valores
 *  como si fueran codigo ASCII, pero que nunca usaria
 *  como tal, por eso tomo valores negativos
 */
 #define NONE           -02
 #define CPS_LCK        -05
 #define NUM_LCK        -06
 #define SCR_LCK        -07
 #define ESC            -11
 #define L_CTRL         -12
 #define R_CTRL         -13
 #define L_SHIFT        -14
 #define R_SHIFT        -15
 #define L_ALT          -16
 #define R_ALT          -17
 #define F01            -18
 #define F02            -19
 #define F03            -20
 #define F04            -21
 #define F05            -22
 #define F06            -23
 #define F07            -24
 #define F08            -25
 #define F09            -26
 #define F10            -27
 #define F11            -28
 #define F12            -29
 #define HOME           -30
 #define UP             -31
 #define PG_UP          -32
 #define LEFT           -33
 #define CENTER         -34
 #define RIGHT          -35
 #define END            -36
 #define DOWN           -37
 #define PG_DW          -38
 #define INSERT         -39
 #define DELETE         -40
 #define DIERESIS       -41

 #define ACENTO         96

 #define ENHANCED       0x0E
 #define KEYBPORT       0x60
 #define CODETYPE       0x80
 #define SET_RESET      0xED
 #define ACK            0xFA
 #define MAKECODE       0
 #define BREAKCODE      1

#define BUFFER_SIZE     256

void Init_Flags( void );

void keyboard_handler( void );

int setLights(void * args );

int enqueueBuffer( int c );

int dequeueBuffer( int *c );

int setByte( int c );

void set_key_map( int );

#endif
